/**
* 淘宝24.taobao.com图片滚动效果
* 使用Jquery效仿其效果仅用于学习使用
*/
(function($) {          
  $.fn.lin_taobao24 = function(options) {     
    var opts = $.extend({}, $.fn.lin_taobao24.defaults, options);     
    return this.each(function() { 
		var $this=$(this),j=null;
		var $mainMove=$this.find(opts.moveClass+':eq(0)');
		var $otherMove=$this.find(opts.moveClass+':gt(0)');
		
		//自动运行主移动控制,回调运行子移动控制函数
		function autoHandle()
		{
			var direction=$mainMove.attr('data_direction');
			$.fn.lin_taobao24.effects[direction+'_'+opts.direction]($mainMove,229,opts,otherMoveRun);		
		}
		
		//子移动控制函数
		function otherMoveRun()
		{
			$otherMove.each(function(index,elem){
				var $this=$(elem);
				var direction=$this.attr('data_direction');
				var px=$this.attr('data_px');
				$.fn.lin_taobao24.effects[direction+'_'+opts.direction]($this,px,opts);			
			});
		}
		
		//自动运行接口
		function auto(){
			opts.direction=1;
			autoHandle();
		}
		j=setInterval(auto,opts.autoTime);
		
		$(opts.preBtn,$this).click(function(){
			clearInterval(j);
			opts.direction=0;
			autoHandle();
		});
		
		$(opts.nextBtn,$this).click(function(){
			clearInterval(j);
			opts.direction=1;
			autoHandle();
		});
		
		$this.on('mouseenter',function(){
			clearInterval(j);
		}).on('mouseleave',function(){
			opts.direction=1;
			j=setInterval(auto,opts.autoTime);
		});
		
    }); 
  };    
  // 插件的defaults     
  $.fn.lin_taobao24.defaults = { 
  	moveClass:'.lin_L_move',//移动包含元素样式,样式集合第一个元素为主移动元素
	targetObj:'div',//移动元素内的子元素
	speed:500,//移动速度
	autoTime:5000,//自动播放时间
	direction:1,//方向：1-正方向；2-负方向
	preBtn:'.lin_move_pre',//前按钮样式
	nextBtn:'.lin_move_next'//后按钮样式
  };  
  //移动效果;后缀_1表示正方向动作，_0表示负方向动作
  $.fn.lin_taobao24.effects=
   {
		top_1:function(obj,px,opts,func){
			if(!obj.is(":animated"))
			{
				     obj.animate({marginTop: '-'+px},opts.speed,function(){
				  	 	var $cl =obj.find(opts.targetObj+":first");
				   		obj.append($cl);
				     	obj.css("marginTop",0);
						if(typeof(func)=='function')func();	
				   	}); 	
			}
		},
		top_0:function(obj,px,opts,func){
			this.bottom_1(obj,px,opts,func);
		},
		bottom_1:function(obj,px,opts,func){
			if(!obj.is(":animated"))
			{
					var $cl =obj.find(opts.targetObj+":last").clone(true);
				   	obj.prepend($cl);	
					obj.css("marginTop",-px);
					obj.animate({marginTop:0},opts.speed,function()
					{
				   		obj.find(opts.targetObj+":last").remove();
						if(typeof(func)=='function')func();	
					});	
			}
		},
		bottom_0:function(obj,px,opts,func){
			this.top_1(obj,px,opts,func);
		},								
		left_1:function(obj,px,opts,func){
				if(!obj.is(":animated"))
				{
					obj.animate({marginLeft:"-"+px},opts.speed,function(){
					obj.find(opts.targetObj+":first").appendTo(obj);
						obj.css({marginLeft:"0"});
						if(typeof(func)=='function')func();	
					});
				}	
		},
		left_0:function(obj,px,opts,func){
				this.right_1(obj,px,opts,func);
		},		
		right_1:function(obj,px,opts,func){
				if(!obj.is(":animated"))
				{
				    obj.find(opts.targetObj+":last").prependTo(obj);
					obj.css({marginLeft:-px});
					obj.stop().animate({marginLeft:0},opts.speed,function(){
						if(typeof(func)=='function')func();	
					});
				}	
		},
		right_0:function(obj,px,opts,func)
		{
			this.left_1(obj,px,opts,func);
		}					
  };   
// 闭包结束     
})(jQuery); 